/**
 * 登录请求
 */
export interface LoginData {
  username?: string;
  password?: string;
  clientId?: string;
  grantType?: string;
  userType?: string;
}

/**
 * 登录响应
 */
export interface LoginResult {
  access_token: string;
}

/**
 * 用户信息
 */
export interface UserInfoVo {
  /** 用户信息 ID */
  id: bigint;

  /** 个性签名 */
  signature: string;

  /** 当前硬币余额 */
  balance: number;

  /** 当前经验值 */
  experience: number;

  /** 生日 */
  birthday: Date;

  /** 账号等级 ID */
  userLevelId: bigint;

  /** 备注 */
  remark?: any;

  /** 用户基础信息（扩展字段） */
  userVo: UserVo;

  /** 关注数量 */
  followNum: number;

  /** 粉丝数量 */
  fansNum: number;

  /** 动态数量 */
  dynamicsNum?: any;

  /** 距离升级还需的经验值 */
  upNextExperience: number;

  /** 当前等级所需的总经验值 */
  requiredExperience: number;

  /** 当前等级 */
  currentUserLevel: number;

  /** 下一等级 */
  nextUserLevel: number;

  /** 等级进度（百分比） */
  levelProgress: number;

  /** 今日是否登录 */
  todayLogin: string;

  /** 注册天数 */
  registerDayCount: number | string;

  /** 当前用户是否关注了视频用户 */
  followUser: boolean;

  /** 用户主页皮肤ID */
  skinId: number | string;

  /** 用户公告 */
  notice: string;
}

export interface UserVo {
  /** 用户ID */
  userId: number;

  /** 租户ID */
  tenantId: string;

  /** 部门ID */
  deptId?: any;

  /** 用户账号 */
  userName: string;

  /** 用户昵称 */
  nickName: string;

  /** 用户类型（如 sys_user 系统用户） */
  userType: string;

  /** 用户邮箱 */
  email: string;

  /** 手机号码 */
  phonenumber: string;

  /** 用户性别（0男 1女 2未知） */
  sex: string;

  /** 头像地址（OSS 文件 ID 或 URL） */
  avatar?: any;

  /** 帐号状态（0正常 1停用） */
  status: string;

  /** 最后登录IP */
  loginIp: string;

  /** 最后登录时间 */
  loginDate: Date;

  /** 备注信息 */
  remark?: any;

  /** 创建时间 */
  createTime: Date;

  /** 部门名 */
  deptName?: any;

  /** 角色对象（可选，数组） */
  roles?: any;

  /** 角色ID数组 */
  roleIds?: any;

  /** 岗位ID数组 */
  postIds?: any;

  /** 当前角色ID（数据权限） */
  roleId?: any;
}

/**
 * 用户附加扩展信息
 * @param id 用户id
 * @param skinId 皮肤ID
 */
export interface UserInfoWebExtVo {
  /** 播放数量 -> 视频 */
  playCount: bigint;
  /** 点赞数量 -> 视频 */
  likeCount: bigint;
  /** 投稿 -> 数量 */
  submitCount: bigint;
  /** 合集数量 */
  collectionCount: bigint;
  /** 收藏数量 */
  collectCount: bigint;
}

/**
 * 更新皮肤
 * @param id 用户id
 * @param skinId 皮肤ID
 */
export interface UpdateSkinData {
  id: bigint;
  skinId: number | string;
}
